/**
 * 
 */

package CCT220_Aula10_Exercício01_13106;

/**
 * Project CCT220:CCT220_Aula10_Exercício01_13106
 * 
 * @author marcel
 * @author 13106
 * 
 * 
 *         20/09/2011
 */
public class Fracao {

	int numerador;
	int denominador;


	/**
	 * Construtor
	 */
	public Fracao() {

		numerador = 0;
		denominador = 1;
	}


	/**
	 * Construtor
	 * 
	 * @param num
	 * @param den
	 */
	public Fracao(int num, int den) {

		numerador = num;
		denominador = den;
		simplificaFracao();
	}


	/**
	 * Metodo para simplificar a fracao
	 */
	public void simplificaFracao() {

		int tmp = mdc(numerador, denominador);
		if (mdc(numerador, denominador) != 1) {
			numerador /= tmp;
			denominador /= tmp;
		}

	}// fim simplificaFracao


	/**
	 * algoritmo mdc para simplificação das
	 * fracoes
	 * 
	 * @param dividendo
	 * @param divisor
	 * @return mdc entre dividendo e divisor
	 */
	static int mdc(int dividendo, int divisor) {

		int x = dividendo;
		int y = divisor;
		if (x == y) {
			return x;
		} else if (y > x) {
			return mdc(x, y - x);
		} else if (x > y) { return mdc(x - y, y); }
		return 0;
	} // fim mdc


	/**
	 * Metodo para adicionar numero
	 * 
	 * @param nro
	 */
	public void adiciona(int nro) {

		numerador += nro * denominador;

	}


	/**
	 * Metodo para adicionar fracao
	 * 
	 * @param frac
	 */
	public void adiciona(Fracao frac) {

		numerador = numerador * frac.denominador + denominador * frac.numerador;
		denominador *= frac.denominador;
	}


	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {

		simplificaFracao();
		return (numerador + "/" + denominador);
	}// fim toString
}
